#!/bin/bash

# ==================================================
# ODrive固件编译脚本 - 使用Git Bash语法
# ==================================================

# 1. 切换到脚本所在目录
echo "切换到脚本所在目录..."
cd "$(dirname "$0")"
echo "当前工作目录: $(pwd)"

# 2. 设置工具链路径（根据环境变量中的路径设置）
# 注意：在Git Bash中，Windows路径需要转换为Unix风格
MAKE_PATH="/c/Program Files (x86)/GnuWin32/bin/make.exe"
ARM_TOOLCHAIN_PATH="/d/arm-gnu-toolchain-14.3.rel1-mingw-w64-i686-arm-none-eabi/bin"

# 3. 添加工具链到PATH环境变量
export PATH="$ARM_TOOLCHAIN_PATH:$PATH"
echo "\n当前PATH环境变量包含ARM工具链: $ARM_TOOLCHAIN_PATH"

# 4. 验证工具是否可用
echo "\n验证编译工具..."

# 检查make工具
if [ -f "$MAKE_PATH" ]; then
    echo "make工具找到: $MAKE_PATH"
    "$MAKE_PATH" --version
else
    echo "错误: 未找到make工具，请检查路径 $MAKE_PATH"
    exit 1
fi

# 检查ARM工具链
echo "\n检查ARM工具链..."
if command -v arm-none-eabi-gcc &> /dev/null; then
    echo "arm-none-eabi-gcc 命令可用"
    arm-none-eabi-gcc --version
else
    echo "错误: 未找到arm-none-eabi-gcc命令，请检查工具链安装"
    exit 1
fi

# 5. 创建build目录（如果不存在）
echo "\n检查build目录..."
if [ ! -d "build" ]; then
    echo "创建build目录..."
    mkdir build
fi

# 6. 执行编译
echo "\n开始编译ODrive固件..."
"$MAKE_PATH" clean  # 先清理之前的编译结果
"$MAKE_PATH" -j4    # 使用4个线程并行编译

# 7. 检查编译结果
if [ $? -eq 0 ]; then
    echo "\n编译成功!"
    # 显示编译生成的文件
    echo "编译生成的文件:"
    ls -la build/*.bin build/*.elf 2>/dev/null || echo "未找到编译生成的二进制文件"
else
    echo "\n编译失败，请检查错误信息。"
    exit 1
fi

# 8. 编译完成信息
echo "\nODrive固件编译脚本执行完毕！"